#include <iostream>
using namespace std;

template <int n>
struct Factorial
{
	enum { result = Factorial<n-1>::result*n};
};

template <>
struct Factorial<0>
{
	enum { result = 1};
};

void main()
{
	cout<< Factorial<5>::result << endl;
}